import axios from "axios";
import { useUserStore } from "@/store/module/user";
import { ElMessage } from "element-plus";
import { loginOut } from "@/common";

const instance = axios.create({
  baseURL: "http://xue.cnkdl.cn:9082/mall-admin/",
  timeout: 5000,
});

// 请求拦截器
instance.interceptors.request.use(
  (config) => {
    console.log("请求拦截器");

    let token = localStorage.getItem("token");
    if (token) {
      if (config.headers) {
        config.headers["Authorization"] = token;
      }
    }

    return config;
  },
  (err) => {
    Promise.reject(err);
  }
);

// 响应拦截器
instance.interceptors.response.use(
  (response) => {
    console.log("响应拦截器");
    const res = response.data as IRsponse<any>;
    // 后台返回401 token过期
    const userStore = useUserStore();
    if (res.code == 401) {
      // // 退出登陆
      // // 删除token
      // localStorage.removeItem("token");
      // // 删除仓库 pinia
      // userStore.updateMenus([]);
      // userStore.username = "";
      // // 清除动态路由 c
      // const allrouter = router.getRoutes();
      // allrouter.forEach((item) => {
      //   if (item.name != "login" && item.name) {
      //     router.removeRoute(item.name);
      //   }
      // });
      // // 提示退出成功
      // ElMessage.success("验证已经过期");
      // // 跳转到login
      // router.push("login");

      // ----------在common里封装的--------------
      loginOut(
        () => {},
        () => {
          // 提示退出成功
          ElMessage.success("验证已经过期");
        }
      );
    }

    return response.data;
  },
  (err) => {
    Promise.reject(err);
  }
);

export default instance;
